package br.com.jmed.control;

import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.inject.Inject;

import br.com.jmed.model.TipoAcomodacao;
import br.com.jmed.service.TipoAcomodacaoService;

@ManagedBean(name = "tipoAcomodacaoControl")
@SessionScoped
public class TipoAcomodacaoControl extends BaseControl implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@EJB
	private TipoAcomodacaoService tipoAcomodacaoService;

	@Inject
	private TipoAcomodacao tipoAcomodacao;

	private TipoAcomodacao tipoAcomodacaoSelect;

	private List<TipoAcomodacao> listTipoAcomodacao;

	public String salvarCadastroTipoAcomodacao() throws IOException {
		listTipoAcomodacao = new ArrayList<TipoAcomodacao>();
		tipoAcomodacao.setUsuarioInclusao(getUsuario());
		tipoAcomodacao.setDataInclusao(new Date());
		tipoAcomodacao.setCodigo(null);
		tipoAcomodacaoService.salvarTipoAcomodacao(tipoAcomodacao);
		this.tipoAcomodacao = new TipoAcomodacao();
		return "/pages/tipoacomodacao/tipoacomodacaoBusca.xhtml";
	}

	public String novoCadastroTipoAcomodacao() throws IOException {
		this.tipoAcomodacao = new TipoAcomodacao();
		this.listTipoAcomodacao = new ArrayList<TipoAcomodacao>();
		return "/pages/tipoacomodacao/tipoacomodacaoIncluir.xhtml";
	}

	public String alterarCadastroTipoAcomodacao() throws IOException {
		listTipoAcomodacao = new ArrayList<TipoAcomodacao>();
		tipoAcomodacaoSelect.setUsuarioAlteracao(getUsuario());
		tipoAcomodacaoSelect.setDataAlteracao(new Date());
		tipoAcomodacaoService.atualizarTipoAcomodacao(tipoAcomodacaoSelect);
		tipoAcomodacaoSelect = new TipoAcomodacao();
		tipoAcomodacaoSelect.setCodigo(null) ;
		listTipoAcomodacao = tipoAcomodacaoService.findAllTipoAcomodacaos();
		return "/pages/tipoacomodacao/tipoacomodacaoBusca.xhtml";
	}

	public String abrirAlterarTipoAcomodacao(TipoAcomodacao tipoAcomodacao) {
		this.tipoAcomodacaoSelect = tipoAcomodacaoService
				.findTipoAcomodacaoByCod(tipoAcomodacao.getCodigo());
		return "/pages/tipoacomodacao/tipoacomodacaoAlterar.xhtml";
	}

	public void pesquisarTipoAcomodacao() {
		listTipoAcomodacao = new ArrayList<TipoAcomodacao>();
		if (tipoAcomodacao.getCodigo() != 0) {
			tipoAcomodacao = tipoAcomodacaoService
					.findTipoAcomodacaoByCod(tipoAcomodacao.getCodigo());
			listTipoAcomodacao.add(tipoAcomodacao);
		} else if (!tipoAcomodacao.getDescricao().trim().equals("")) {
			listTipoAcomodacao = tipoAcomodacaoService
					.findTipoAcomodacaoByDesc(tipoAcomodacao.getDescricao());
		} else {
			listTipoAcomodacao = tipoAcomodacaoService.findAllTipoAcomodacaos();
		}
		tipoAcomodacao = new TipoAcomodacao();
	}

	public List<String> pesquisarAutoCompTipoAcomodacao(String prefix) {
		List<String> toReturn = new ArrayList<String>();
		listTipoAcomodacao = new ArrayList<TipoAcomodacao>();
		listTipoAcomodacao = tipoAcomodacaoService.findAllTipoAcomodacaos();
		
		for (TipoAcomodacao t : listTipoAcomodacao) {
			if (t.getDescricao().startsWith(prefix)) {
				toReturn.add(t.getDescricao());
			}
		}
		
		return toReturn;
	}

	public TipoAcomodacaoService getTipoAcomodacaoService() {
		return tipoAcomodacaoService;
	}

	public void setTipoAcomodacaoService(
			TipoAcomodacaoService tipoAcomodacaoService) {
		this.tipoAcomodacaoService = tipoAcomodacaoService;
	}

	public TipoAcomodacao getTipoAcomodacao() {
		return tipoAcomodacao;
	}

	public void setTipoAcomodacao(TipoAcomodacao tipoAcomodacao) {
		this.tipoAcomodacao = tipoAcomodacao;
	}

	public TipoAcomodacao getTipoAcomodacaoSelect() {
		return tipoAcomodacaoSelect;
	}

	public void setTipoAcomodacaoSelect(TipoAcomodacao tipoAcomodacaoSelect) {
		this.tipoAcomodacaoSelect = tipoAcomodacaoSelect;
	}

	public List<TipoAcomodacao> getListTipoAcomodacao() {
		return listTipoAcomodacao;
	}

	public void setListTipoAcomodacao(List<TipoAcomodacao> listTipoAcomodacao) {
		this.listTipoAcomodacao = listTipoAcomodacao;
	}

}
